package br.com.insight.consultoria.negocio.bo;

import br.com.insight.consultoria.entity.Usuario;
import br.com.insight.consultoria.erro.exception.InsightConstants;
import br.com.insight.consultoria.erro.exception.InsightException;
import br.com.insight.consultoria.erro.exception.InsightNegocioException;
import br.com.insight.consultoria.erro.exception.SistemaException;
import br.com.insight.consultoria.integracao.dao.interfacedao.UsuarioDAO;
import br.com.insight.consultoria.negocio.bo.interfacebo.UsuarioBO;

public class UsuarioImpBO implements UsuarioBO{

	private UsuarioDAO usuarioDAO;
	
	public void inserir(Usuario usuario)throws InsightException {
		
		try{
		
		getUsuarioDAO().inserir(usuario);
		
		}catch(InsightException exception){
			
			throw exception;
			
		}catch(Exception exception){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,exception);
			
		}
		
	}
	
	public void alterar(Usuario usuario)throws InsightException {
		
		try{
		
		getUsuarioDAO().alterar(usuario);
		
		}catch(InsightException exception){
			
			throw exception;
			
		}catch(Exception exception){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,exception);
			
		}
		
	}
	
	public void excluir(Usuario usuario)throws InsightException {
		
		try{
		
		getUsuarioDAO().excluir(usuario);
		
		}catch(InsightException exception){
			
			throw exception;
			
		}catch(Exception exception){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,exception);
			
		}
		
	}
	
	public Usuario getUsuario(Long id) throws InsightException{
		
		try{
		
		return getUsuarioDAO().getUsuario(id);
		
		}catch(InsightException exception){
			
			throw exception;
			
		}catch(Exception exception){
			
			throw new SistemaException(InsightConstants.MENSAGEM_ERRO_NAO_TRATADO,exception);
			
		}
		
	}
	
	@Override
	public boolean validateUsuario(Long id) throws InsightException {
		
		if(getUsuario(id)!=null){
			return true;
		}
		
		return false;
	}
	
	public Usuario loginUsuario(Long id,String senha) throws InsightException{
		
		Usuario usuario=getUsuario(id);
		
		if(usuario==null)
			throw new InsightNegocioException("MN002");
		if(usuario!=null){
			if(!usuario.getId().equals(id)&&usuario.getSenha().equals(senha)){
				throw new InsightNegocioException("MN003");
			}
		}
		
		return usuario;
	}

	public UsuarioDAO getUsuarioDAO() {
		return usuarioDAO;
	}

	public void setUsuarioDAO(UsuarioDAO usuarioDAO) {
		this.usuarioDAO = usuarioDAO;
	}
	
	
	
}
